1. Field of the Invention
The present invention relates to the run-time loading of objects in a modularized computing application, and more particularly to the processing of an object descriptor to identify an object at run-time and to determine whether to load its owning module at run-time in a modularized computing application.
2. Description of the Related Art
Legacy computing applications generally involved the combined operation of a computing logic and resources in a single distribution of code. Typically, the computing logic included one or more object files bound by an executable object. The resources, in turn, included presentation objects such as user interface widgets and raw data for use by the computing logic. The most simple computing applications involved a mere single executable file the most complex computing applications involved multiple dynamic libraries linked to an executable object for loading and unloading at the behest of the executable object.
The development and maintenance of legacy computing applications reflected the early software development culture where a single person or company exclusively controlled the lifecycle of the application. Modern computing notions, however, no longer presume that a single entity controls the lifecycle of an application. Driven by a merger of concepts—both open source and modular componentization of application logic—modern application development allows for a modularized computing application permitting the extension of the application by end users and third parties. Thus, for many applications, only the most elemental aspects of the application are distributed at first. The more robust development of the application is left to the end users.
A modular computing application often involves a core application and a plug-in mechanism included as part of the core application to permit the dynamic extension of the core application at run-time. Considering the ECLIPSE(™) platform, for instance, (ECLIPSE is a trademark of the Eclipse Foundation, Inc.), a basic, modular computing environment for code development is provided along with a plug-in mechanism dependent upon extension points provided by third parties, and a registry of extensions loaded for use within the core environment. The architecture of the ECLISPE platform is well-known and can be found in literature provided at a Web site maintained by the Eclipse Foundation and as described in United States Patent Publication No. US 2004/0003371 A1 by Coulthard et al.
In a modularized computing application, an extension to the core components of the application can be provided along with a manifest, often encoded in markup such as markup conforming to a markup language such as the extensible markup language (XML). The manifest, sometimes referred to as an object descriptor, can specify the extension by name and can list extension points of other extensions which are extended by the specified extension point. The object descriptor further can specify extension points to the specified extension which can be referenced by other extensions to the specified extension. At run-time, the object descriptor can be processed by the core component to determine which extensions can be loaded in order to extend the core component and other extensions to the core component.
The use of the object descriptor structure for modularized computing applications can facilitate the identification of an extension and the deferral of loading of the extension as a plug-in to an application until such time as the plug-in is required. Before loading a plug-in, oftentimes it is required to check the context of the environment to determine whether or not to permit the loading of the plug-in. Generally, context checking is performed by the plug-in itself as a private matter to the plug-in and often involves the identification of an object to determine its applicability as a context to the plug-in. Yet, at present, the context, which is a referenced object, can be determined from the fully qualified name of the class of the object itself. Alternatively, property-value pairs for the object can be inspected only so long as the object conforms to a specified interface.